package br.com.foxinline.servico;

import br.com.foxinline.modelo.Ato;
import br.com.foxinline.modelo.AtoCampo;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class AtoCampoServico extends ServicoGenerico<AtoCampo> {
    
    public AtoCampoServico() {
        super(AtoCampo.class);
    }
    
    public List<AtoCampo> pesquisar(AtoCampo atoCampo) {
        String sql = "select atoCampo from AtoCampo atoCampo where atoCampo.ativo = true";

        if (!atoCampo.getNome().isEmpty()) {
            sql += "and lower(atoCampo.nome) like '%" + atoCampo.getNome().toLowerCase().trim() + "%'";
        }

        Query query = getEntityManager().createQuery(sql);
        return query.getResultList();
    }
    
    public List<AtoCampo> pesquisar(Ato ato) {
        
        String sql = "select ato.atoCampos from Ato ato";
        
        if (ato != null && ato.getId() != null) {
            sql += " where ato = :ato";
        }

        Query query = getEntityManager().createQuery(sql);
        if (ato != null && ato.getId() != null) {
            query.setParameter("ato", ato);
        }
        return query.getResultList();
    }

    @Override
    public void deletar(AtoCampo atoCampo) {
        atoCampo.setAtivo(false);
        super.atualizar(atoCampo);
    }

    public List<AtoCampo> autocompletar(String query){
        return buscarPeloNome(query);
    }

    public List<AtoCampo> buscarPeloNome(String query){
        List<AtoCampo> atoCampos = getEntityManager().createQuery("select atoCampo from " + AtoCampo.class.getSimpleName() + " atoCampo where lower(atoCampo.nome) like '%" + query.toLowerCase().trim() + "%'").getResultList();
        return atoCampos;
    }    
    
}
